# -*- coding: utf-8 -*-
"""
Author: chen xi
Date: 2025/5/22 下午4:13
File: blackness_checker.py
"""

from PIL import Image
import numpy as np


def is_black_screen(_image_path, threshold=10, black_ratio=0.8):
	"""
    判断给定图片是否为黑屏。如果图像中超过一定比例（如90%）的像素的灰度值低于阈值，则认为是黑屏。

    参数:
        _image_path (str): 图片路径。
        threshold (int): 灰度值阈值，默认为10。如果某个像素的灰度值小于这个阈值，则认为它是黑色的。
        black_ratio (float): 黑色像素所占比例的阈值，默认为0.9。如果图像中黑色像素的比例超过此值，则认为是黑屏。

    返回:
        bool: 如果图片被认为是黑屏则返回True，否则返回False。
    """
	# 打开图片并转换为灰度图像
	with Image.open(_image_path) as img:
		gray_img = img.convert('L')  # 转换为灰度图像
		
		# 将图像数据转换为numpy数组以进行快速处理
		img_array = np.array(gray_img)
		
		# 计算灰度值低于阈值的像素数量
		dark_pixels = np.sum(img_array <= threshold)
		
		# 总像素数量
		total_pixels = img_array.size
		
		# 计算黑色像素所占比例
		ratio_dark = dark_pixels / total_pixels
		
		# 判断黑色像素比例是否超过设定阈值
		if ratio_dark >= black_ratio:
			return True
		else:
			return False


# 示例用法
if __name__ == "__main__":
	image_path = r"C:\Users\Administrator\uiauto2\UiAutoTest\temp\element_screenshot_1747908531.png"  # 替换为你的图片路径
	result = is_black_screen(image_path)
	if result:
		print("The image is considered to be a black screen.")
	else:
		print("The image is not a black screen.")